package com.rongji.cms.tools.flowable.service;/**
 * @author yang
 * @date 2022/9/20 13:36
 * @description
 */


import com.rongji.cms.tools.common.core.domain.PageQuery;
import com.rongji.cms.tools.common.core.page.TableDataInfo;
import com.rongji.cms.tools.flowable.domain.vo.WfDefinitionVo;

import java.io.IOException;
import java.io.InputStream;
import java.util.Map;

/**
 * @author yang
 * @date 2022/9/20 13:36
 * @description
 */

public interface IWfDefinitionService {


    /**
     * 流程定义列表
     *
     * @param pageQuery 分页参数
     * @return 流程定义分页列表数据
     */
    TableDataInfo<WfDefinitionVo> list(PageQuery pageQuery);


    /**
     * 导入流程文件
     *
     * @param fileName
     * @param in
     */
    void importFile(String fileName, InputStream in);

    /**
     * 读取xml
     *
     * @param deployId
     * @return
     */
    String readXml(String deployId) throws IOException;

    /**
     * 读取图片文件
     *
     * @param definitionId 流程定义ID
     * @return
     */
    InputStream readImage(String definitionId);

//    /**
//     * 读取图片文件
//     *
//     * @param deployId
//     * @return
//     */
//    InputStream readImage(String deployId);

    /**
     * 删除流程定义
     *
     * @param deployId 流程部署ID act_ge_bytearray 表中 deployment_id值
     */
    void delete(String deployId);


    /**
     * 根据流程定义ID启动流程实例
     *
     * @param procDefId
     * @param variables
     * @return
     */

    String startProcessInstanceById(String procDefId, Map<String, Object> variables);


    /**
     * 激活或挂起流程定义
     *
     * @param state    状态
     * @param deployId 流程部署ID
     */
    void updateState(Integer state, String deployId);
}
